Springboot中使用RestTemplate(一种更为优雅的调用RESTful服务的方式) |
您所在的位置:网站首页 › springboot resttemplate上传将文件值传到另一接口 › Springboot中使用RestTemplate(一种更为优雅的调用RESTful服务的方式) |
背景
我们在开发java后端的时候,多多少少会遇到一些需要接受别人数据的时候,那通常这种情况,对面大多数情况下都会使用HTTP的方式来提供接口。按照之前的开发经验,大多数人会采用apache的HttpClient开发,或者使用OKHTTP开发。但这两种方式,都需要很长一段代码(或者我直接复制一个类过来),代码复杂、还要担心资源回收的问题。 RestTemplate是Spring用于同步client端的核心类,简化了与http服务的通信,并满足RestFul原则,程序代码可以给它提供URL,并提取结果。默认情况下,RestTemplate默认依赖jdk的HTTP连接工具。当然你也可以 通过setRequestFactory属性切换到不同的HTTP源,比如Apache HttpComponents、Netty和OkHttp。 RestTemplate使用 引入RestTemplateRestTemplate是spring的一个rest客户端,在spring-web这个包下,spring boot的依赖如下 org.springframework.boot spring-boot-starter-web 配置RestTemplate类: package com.deepbluebi.aip.smartoffice.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.web.client.RestTemplate; import org.springframework.http.converter.StringHttpMessageConverter; import java.nio.charset.Charset; /** * 描述: * * @author xxx * @create 2019-07-25-15:55 */ @Configuration public class RestTemplateConfig { @Bean public RestTemplate restTemplate(ClientHttpRequestFactory factory){ RestTemplate restTemplate= new RestTemplate(factory); // 支持中文编码 restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(Charset.forName("UTF-8"))); return restTemplate; } @Bean public ClientHttpRequestFactory simpleClientHttpRequestFactory(){ SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); factory.setReadTimeout(5000);//单位为ms factory.setConnectTimeout(5000);//单位为ms return factory; } }配置类其实没啥好说的,大家自己看就行,重点就是如何使用restTemplate RestTemplate使用下面我们讲几种最常用的方法: - Get请求:getForObject 和 getForEntity 这两个方法都是采用get请求去获取数据。 但是 getForObject()其实比getForEntity()多包含了将HTTP转成POJO的功能,但是getForObject没有处理response的能力。因为它拿到手的就是成型的pojo。省略了很多response的信息。 getForObject 和getForEntity 差不都,不多介绍了。 这里还得注重介绍下getForEntity 返回的ResponseEntity 这个类: ResponseEntity response = restTemplate.getForEntity(url, ResponseBean.class,map); response.getHeaders(); //响应头 response.getStatusCode(); //响应码 response.getBody(); //响应体,就是返回内容 - POST请求:post请求应该是比GET请求还要常用的方法:最常见的就是在post请求中添加 header。 我们先从基本开始看。 POST和GET请求一样也有 postForObject和postForEntity。 post和get的区别就是 post 是把发送的内容放到body里面。那么我们需要先构建body类。也就是 HttpEntity 包括返回数据乱码都可以在 header中指定返回类型 通用的exchange 方法:exchange()方法跟上面的方法不同之处在于它可以指定请求的HTTP类型。 exchange方法有以下几种: 从去年到今年隔了有一年才开始更新博客了,去年那个时候也是正好换工作的时候 ,所以忙着换工作也没时间更新,后来找到工作了,刚上班也比较忙,没啥时间来更新(其实就是懒=。=)。最近恢复更新,嘻嘻。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |